#!user/bin/env python3
# -- coding: utf-8 --
"""
PIL，全称 Python Imaging Library，是 Python 平台一个功能非常强大而且简单易用的图像处理库。
但是，由于 PIL 仅支持到Python 2.7，加上年久失修，于是一群志愿者在 PIL 的基础上创建了兼容 Python 3 的版本，
名字叫 Pillow ，我们可以通过安装 Pillow 来使用 PIL。
"""
# 1. pip 安装 pillow
# 在 终端输入命令`pip install pillow`即可成功安装库。

# 2. 打开、保存、显示图片
import numpy as np
from PIL import Image

image = Image.open(r'C:\Users\Administrator\PycharmProjects\web_crawler\网络爬虫\网站爬虫\第二季\verification.png')
# image.show()
image.save('./1.png')
# print(image.mode, image.size, image.format)
# RGBA (300, 339) PNG
"""mode 属性为图片的模式，RGB 代表彩色图像，L 代表光照图像也即灰度图像等
size 属性为图片的大小(宽度，长度)
format 属性为图片的格式，如常见的 PNG、JPEG 等
"""
# # 3. 转换图片模式
# image.show()
grey_image = image.convert('L')
# grey_image.show()
# 任何支持的图片模式都可以直接转为彩色模式或者灰度模式，但是，若是想转化为其他模式，则需要借助一个中间模式（通常是彩色）来进行过转
# 4. 通道分离合并
# r, g, b = image.split()
# im = Image.merge('RGB', (b, g, r))
# 彩色图像可以分离出 R、G、B 通道，但若是灰度图像，则返回灰度图像本身。然后，可以将 R、G、B 通道按照一定的顺序再合并成彩色图像。
# 5. 图片裁剪、旋转和改变大小
box = (100, 100, 300, 300)  # 图片坐标采用一个四元组
region = image.crop(box)
region = region.transpose(Image.Transpose.ROTATE_180)  # 旋转180°
image.paste(region, box)
# image.show()
# 通过定义一个 4 元组，依次为左上角 X 坐标、Y 坐标，右下角 X 坐标、Y 坐标，可以対原图片的某一区域进行裁剪，然后进行一定处理后可以在原位置粘贴回去。
im = image.resize((300, 300))
# im.show()
im = image.rotate(45)  # 逆时针旋转 45 度
# im.show()
im = image.transpose(Image.Transpose.FLIP_LEFT_RIGHT) # 左右翻转
# im.show()
im = im.transpose(Image.Transpose.FLIP_TOP_BOTTOM)# 上下翻转
# im.show()
# 6. 像素值操作
out = image.point(lambda i: i * 1.2) # 对每个像素值乘以 1.2
# out.show()
source = image.split()
out1 = source[0].point(lambda i: i > 128 and 255) # 对 R 通道进行二值化
# out1.show()
# i > 128 and 255，当 i <= 128 时，返回 False 也即 0,；反之返回 255 。
# 7. 和 Numpy 数组之间的转化
array = np.array(image)
print(array.shape) #(339, 300, 4)
out2 = Image.fromarray(array)
# out2.show()